import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from 'unplugin-auto-import/vite'
// Vue 的按需组件自动导入
import Components from 'unplugin-vue-components/vite'
import { NaiveUiResolver } from 'unplugin-vue-components/resolvers'
// 做 svg Icon 按需解析并加载的，同时它基于 iconify 图标库支持按需访问上万种图标
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import {resolve} from 'path'
// https://vitejs.dev/config/
const root = process.cwd()
export default defineConfig({
	root ,  //项目根目录
	base: '/', //  开发或生产环境服务的公共基础路径
	publicDir: resolve(__dirname, './dist'),
	assetsInclude: resolve(__dirname, './src/assets'), // 静态资源处理
	plugins: [
		vue(),
		vueJsx(),
		AutoImport({
			imports: [
			  'vue',
			  'vue-router',
			  'pinia'
			],
			dts: 'types/auto-import.d.ts' //生成全局引入的文件
		}),
		Icons({
			defaultClass: 'inline',
			defaultStyle: 'vertical-align: sub;',
		}),
		Components({
			resolvers: [NaiveUiResolver(), IconsResolver({
				componentPrefix: '',
			})],
		}),
    ],
	server: {
		hmr:{
			overlay:true
		},
		port: 3000, //指定开发服务器端口
		strictPort: true, //设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口
		https: false, //设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口
		open: true, //开发服务器启动时，自动在浏览器中打开应用程序。当该值为字符串时，它将被用作 URL 的路径名。process.env.BROWSER = "fireforx" process.env.BROWSER_ARGS
		proxy: {
			//  '/api': {
			//   target: 'http://jsonplaceholder.typicode.com',
			//   changeOrigin: true,
			//   configure: (proxy, options) => {
			// 	// proxy 是 'http-proxy' 的实例
			//   }
			// },
			'/api': {
				target: 'http://127.0.0.1:5000',
				changeOrigin: true,
				rewrite: (path) => path.replace(/^\/api/, ''),
			},
		}
	},
	build: {
	      target: 'modules', //设置最终构建的浏览器兼容目标  //es2015(编译成es5) | modules
	      outDir: 'dist', // 构建得包名  默认：dist
	      assetsDir: 'assets', // 静态资源得存放路径文件名  assets
	      sourcemap: false, //构建后是否生成 source map 文件
	      // brotliSize: false, // 启用/禁用 brotli 压缩大小报告。 禁用该功能可能会提高大型项目的构建性能
	      minify: 'esbuild', // 项目压缩 :boolean | 'terser' | 'esbuild'
	      chunkSizeWarningLimit: 1000, //chunk 大小警告的限制（以 kbs 为单位）默认：500
	      cssTarget: 'chrome61' //防止 vite 将 rgba() 颜色转化为 #RGBA 十六进制符号的形式  (要兼容的场景是安卓微信中的 webview 时,它不支持 CSS 中的 #RGBA 十六进制颜色符号)
	},
	resolve:{
		alias:{
			'@': resolve(__dirname, 'src'),
			components: resolve(__dirname, './src/components'),
			assets: resolve(__dirname, './src/assets'),
			'#': resolve(__dirname, 'types'),
			build: resolve(__dirname, 'build')
		}
	}
})